package com.hundsun.documentripper.config;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import java.util.Date;
import java.util.UUID;

/**
 * Note：需要对象增加@TableField(fill = FieldFill.xxx)注解
 *
 * @author ：mengjw
 * @description：数据处理器，自动填充uuid，创建时间和更新时间
 * @date ：Created in 2021/1/27
 */
@Component
public class MetaHandler implements MetaObjectHandler {

    /**
     * 新增数据执行
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        if (metaObject.hasSetter("uuid") && StringUtils.isEmpty(metaObject.getValue("uuid"))) {
            this.setFieldValByName("uuid", UUID.randomUUID().toString(), metaObject);
        }
        if (metaObject.hasSetter("createTime")) {
            this.setFieldValByName("createTime", new Date(), metaObject);
        }
    }

    /**
     * 更新数据执行
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        Object val = getFieldValByName("modifyTime", metaObject);
        if (val == null) {
            this.setFieldValByName("modifyTime", new Date(), metaObject);
        }
    }

}